;/***************************************************************
;Copyright (c) 2010, Payton Byrd
;All rights reserved.
;
;Redistribution and use in source and binary forms, with or
;without modification, are permitted provided that the following
;conditions are met:
;
;* Redistributions of source code must retain the above
;  copyright notice, this list of conditions and the following
;  disclaimer.
;
;* Redistributions in binary form must reproduce the above
;  copyright notice, this list of conditions and the following
;  disclaimer in the documentation and/or other materials
;  provided with the distribution.
;
;* Neither the name of Payton Byrd nor the names of its
;  contributors may be used to endorse or promote products
;  derived from this software without specific prior written
;  permission.
;
;THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
;CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
;INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
;MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
;DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
;CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
;SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
;NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
;LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
;HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
;CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
;OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
;EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
;***************************************************************/
;
; Based on code by Ninja at 
; http://www.codebase64.org/doku.php?id=base:detect_pal_ntsc&s[]=pal&s[]=ntsc&s[]=detect
;
;***************************************************************/

;.ifdef __C64 __
.importzp	sp
.import		pusha, incsp2
.macpack	generic

.export _checkC64PALorNTSC

.proc _checkC64PALorNTSC
              jsr palntsc                 ; perform check
              sta $02a6                   ; update KERNAL-variable
			  
			  ldx #$00
			  ;lda $02a6
			  rts

palntsc:
              sei                         ; disable interrupts
              ldx $FFFA
              ldy $FFFB					  ; remember old NMI-vector
              lda #<rti_
              sta $FFFA
              lda #>rti_                  ; let NMI-vector point to
              sta $FFFB                   ; a RTI
wait:
              lda $d012
              bne wait                    ; wait for rasterline 0 or 256
              lda #$37
              sta $d012
              lda #$9b                    ; write testline $137 to the
              sta $d011                   ; latch-register
              lda #$01
              sta $d019                   ; clear IMR-Bit 0
wait1:
              lda $d011                   ; Is rasterbeam in the area
              bpl wait1                   ; 0-255? if yes, wait
wait2:
              lda $d011                   ; Is rasterbeam in the area
              bmi wait2                   ; 256 to end? if yes, wait
              lda $d019                   ; read IMR
              and #$01                    ; mask Bit 0
              sta $d019                   ; clear IMR-Bit 0
              stx $FFFA
              sty $FFFB                   ; restore old NMI-vector
              cli                         ; enable interrupts
              rts                         ; return

rti_:          
			  rti                         ; go immediately back after
                                          ; a NMI
.endproc

;.endif